/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AccesoDatos.DAOLocal;

import AccesoDatos.IDAO.IDAOConfiguracion;
import ObjetoDominio.Servidor;
import Session.Session;
import java.io.FileInputStream;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

/**
 *Clase que implernta IDAOConfiguracion para leer la configuracion desde un archivo
 * XML
 * @author familia
 */
public class DAOConfiguracionXml  implements IDAOConfiguracion{

    @Override
    public int ObtenerPuertoPrincipal() {
        try {
            
            SAXBuilder builder = new SAXBuilder();
            Document result = builder.build(new FileInputStream("Configuracion.xml"));  
            Element raiz = result.getRootElement(); 
            Element hijosRaiz = raiz.getChild("puertoPrincipal"); 
            return Integer.parseInt(hijosRaiz.getValue());

        } catch (Exception e) {  
            System.out.println(e.getMessage());
            return -1;
        }
    }

    @Override
    public int ObtenerPuertoSecundario() {
        try {
            
            SAXBuilder builder = new SAXBuilder();
            Document result = builder.build(new FileInputStream("Configuracion.xml"));  
            Element raiz = result.getRootElement(); 
            Element hijosRaiz = raiz.getChild("puertoSecundario"); 
            return Integer.parseInt(hijosRaiz.getValue());

        } catch (Exception e) {  
            System.out.println(e.getMessage());
            return -1;
        }
    }
    
    @Override
    public void ObtenerListaServidores() {
        try{
            SAXBuilder builder = new SAXBuilder();
            Document result = builder.build(new FileInputStream("Servidores.xml"));  
            Element raiz = result.getRootElement(); 
            List<Element> hijosRaiz = raiz.getChildren("servidor"); 
            for (Element elemento : hijosRaiz) {
                Servidor servidor = new Servidor();
                servidor.setIp(elemento.getChild("ip").getValue());
                servidor.setPuerto(Integer.parseInt(elemento.getChild("puertoPrincipal").getValue()));
                servidor.setPuertoSecundario(Integer.parseInt(elemento.getChild("puertoSecundario").getValue()));
                servidor.setActivo(true);
                if(!(Session.getDatosPropios().getIp().equalsIgnoreCase(servidor.getIp()) &&  
                        Session.getDatosPropios().getPuerto() == servidor.getPuerto() 
                        && Session.getDatosPropios().getPuertoSecundario() == servidor.getPuertoSecundario())){
                    Session.getServidores().add(servidor);
                }
            }
        } catch (Exception e) {  
            System.out.println(e.getMessage());
        }
    }
    
}
